﻿'   VBA Extractor - exports VB source code from macro enabled Word and Excel documents
'   Copyright (c) 2013 Tony Jollans & Neil Dodson

'   This program is free software; you can redistribute it and/or
'   modify it under the terms of the GNU General Public License
'   as published by the Free Software Foundation; either version 2
'   of the License, or (at your option) any later version.

'   This program is distributed in the hope that it will be useful,
'   but WITHOUT ANY WARRANTY; without even the implied warranty of
'   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
'   GNU General Public License for more details.

'   You should have received a copy of the GNU General Public License
'   along with this program; if not, write to the Free Software
'   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.


Imports System.Collections.Specialized
Imports System.Text
 
Public Class Vb6ProjectFile
    Inherits Vb6File

    Public SourceFiles As New List(Of SourceFile)
    Public References As New List(Of ActiveXReference)
    Public Attributes As New NameValueCollection

    Public Overrides ReadOnly Property FileExtension() As String
        Get
            Return ".vbp"
        End Get
    End Property

    Public Overrides ReadOnly Property Code As String
        Get
            Dim stringBuilder As New StringBuilder

            For Each reference In Me.References
                With reference
                    stringBuilder.AppendFormat("Reference=*\G{0}#{1}.{2}#{3}#{4}#{5}{6}", .Guid, .MajorVersion, .MinorVersion, .Lcid, .HintPath, .Name, vbCrLf)
                End With
            Next reference

            For Each sourceFile In Me.SourceFiles
                With sourceFile
                    stringBuilder.AppendLine(sourceFile.ManifestDeclaration)
                End With
            Next sourceFile

            For Each key In Attributes.AllKeys
                If IsNumeric(Attributes(key)) Then
                    stringBuilder.AppendFormat("{0}={1}{2}", key, Attributes(key), vbCrLf)
                Else
                    stringBuilder.AppendFormat("{0}=""{1}""{2}", key, Attributes(key), vbCrLf)
                End If
            Next key

            stringBuilder.AppendLine()

            Return stringBuilder.ToString()
        End Get
    End Property
End Class
